package com.baofu.paycore.service.facade;

import com.baofu.paycore.service.facade.model.recharge.RechargeConfirmDTO;
import com.system.commons.result.Result;
import com.baofu.paycore.service.facade.model.recharge.RechargeDTO;
import com.baofu.paycore.service.facade.model.WebPayResDTO;
import com.baofu.paycore.service.facade.model.recharge.RechargeResDTO;

/**
 * 充值相关服务
 * <p>
 *     1、获取跳转外部支付渠道进行充值的URL
 *     2、外部支付渠道支付完成后异步回调接口
 *     3、线下充值接口
 * </p>
 * User: LZQ  Date: 2014/12/08 ProjectName: paycore Version: 5.0.0
 * User: kwl  Date: 2016/05/06 ProjectName: paycore Version: 5.0.0
 */
public interface RechargeServiceFacade {

    /**
     * 获取跳转外部支付渠道进行充值的URL
     *
     * @param rechargeDTO               充值请求对象
     * @param transLogId                日志ID
     * @return                          跳转银行所需参数
     *                                  response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<WebPayResDTO> webRecharge(RechargeDTO rechargeDTO,String transLogId);

    /**
     * 后台充值接口
     *
     * @param rechargeDTO               充值请求对象
     * @param transLogId                日志ID
     * @return                          充值结果
     *                                  response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<RechargeResDTO> recharge(RechargeDTO rechargeDTO,String transLogId);


    /**
     * 后台充值确认接口
     *
     * @param rechargeDTO               充值请求对象
     * @param transLogId                日志ID
     * @return                          充值结果
     *                                  response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<RechargeResDTO> rechargeConfirm(RechargeConfirmDTO rechargeDTO, String transLogId);


        /**
         * 线下充值接口
         *
         * @param rechargeDTO               充值请求对象
         * @param transLogId                日志ID
         * @return                          充值结果
         */
    Result<RechargeResDTO> offlineRecharge(RechargeDTO rechargeDTO,String transLogId);

}